package repositorios;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import util.HibernateUtil;

import entidades.Usuario;

public class RepUsuario implements IRepUsuario {

	private Session session;

	public RepUsuario() {
		this.session = HibernateUtil.getSession();
	}

	public void inserir(Usuario o) {
		if (consultar(o.getEmail()) == null) {
			session.beginTransaction();
			session.save(o);
			session.beginTransaction().commit();
//			session.close();
		} else {
			System.out.println("Usuario existente!");
		}
	}

	public void atualizar(Usuario o) {
		if (consultar(o.getEmail()) != null) {
			Usuario u = (Usuario) session.get(Usuario.class, o.getEmail());
			u.setNome(o.getNome());
			u.setSenha(o.getSenha());
			session.beginTransaction();
			session.update(u);
			session.beginTransaction().commit();
			session.close();
		} else {
			System.out.println("Usuario inexistente!");
		}
	}

	public void excluir(Usuario o) {
		if (consultar(o.getEmail()) != null) {
			Usuario u = (Usuario) session.get(Usuario.class, o.getEmail());
			session.beginTransaction();
			session.delete(u);
			session.beginTransaction().commit();
			session.close();
		} else {
			System.out.println("Usuario inexistente!");
		}
	}

	public Usuario consultar(String email) {
		Usuario u = (Usuario) session.get(Usuario.class, email);
		return u;
	}

	public List<Usuario> consultarTodos() {
		List<Usuario> lista = new ArrayList<Usuario>();
		session.beginTransaction();
		Query query = session.createQuery("from Usuario");
		lista = query.list();
		session.close();
		return lista;
	}

}
